#ifndef BULLET_TEST_H
#define BULLET_TEST_H

#include "State.h"


class btBroadphaseInterface;
class btDefaultCollisionConfiguration;
class btSequentialImpulseConstraintSolver;
class btCollisionDispatcher;
class btDiscreteDynamicsWorld;

class btCollisionShape;
class btRigidBody;
struct btDefaultMotionState;


namespace Ogre {
    class Camera;
    class Viewport;
    class SceneManager;
}

namespace pong {
	class Ball;

	class BulletTestState : public State {
	protected:
		btBroadphaseInterface* broadphase;
		btDefaultCollisionConfiguration* collisionConfig;
		btCollisionDispatcher* dispatcher;
		btSequentialImpulseConstraintSolver* solver;
		btDiscreteDynamicsWorld* world;

		btCollisionShape* groundShape;
		btDefaultMotionState* groundMotionState;
		btRigidBody* groundRigidBody;
		
        Ogre::Viewport* vp;
        Ogre::Camera* cam;
        Ogre::SceneManager* sceneMan;

		Ball* ball;

	public:
		BulletTestState(void) {}
		virtual ~BulletTestState(void) {}

        virtual void load(Core&);
        virtual void unload(Core&);

        virtual bool update(Core&);

        virtual bool keyPressed(const OIS::KeyEvent& e);
	};
}

#endif // BULLET_TEST_H